/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package epibot.QualificaSites;

import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 *
 * @author Rafael Tosta
 */
public class ProcessadorDeArquivo {

    /**
     * Obtém uma matriz contendo o nome e o respectivo site
     *
     * @param urlEntrada Diretório de entrada
     * @return
     */
    public String[][] getNomesSites(File urlEntrada) {
        if (!urlEntrada.exists()) {
            System.out.println("Diretório não existente!");
            return null;
        } else {
            String[] subDir = urlEntrada.list();
            String[][] nomes = new String[subDir.length][2];
            for (int i = 0; i < subDir.length; i++) {
                nomes[i][0] = subDir[i];
            }
            return nomes;
        }
    }

    /**
     * Obtém os dados do arquivo e armazena em uma matriz
     *
     * @param file Referência do arquivo
     * @return
     */
    public String[][] getDados(File file) {
        ArrayList<String> dadosLinhas = new ArrayList<String>();

        // 1ª parte //separa por linhas

        StringTokenizer st1 = new StringTokenizer(lerArquivo(file), "\n");
        st1.nextToken();//desconsidera o cabeçalho
        while (st1.hasMoreTokens()) {
            dadosLinhas.add(st1.nextToken());
        }

        // 2ª parte
        int linha = dadosLinhas.size();
        int coluna = 8;//para o local e 7 para o global
        String[][] campos = new String[linha][coluna];

        int tam = 0;
        if (file.getName().equals("GLOBAL.txt")) {
            tam = 7;
        } else {
            tam = 8;
        }
        String[] pedaco = new String[tam];

        for (int j = 0; j < dadosLinhas.size(); j++) {
            StringTokenizer st2 = new StringTokenizer(dadosLinhas.get(j), ",");
            //coloca os valores na matriz
            for (int k = 0; k < pedaco.length; k++) {
                campos[j][k] = st2.nextToken();//pedaco[k];
            }
        }

        return campos;
    }

    /**
     * Ler um arquivo e coloca o seu conteúdo em apenas uma string
     *
     * @param file Referência do arquivo
     * @return
     */
    public String lerArquivo(File file) {
        int size = (int) file.length();
        byte[] buffer = new byte[size];
        String stringTemp = null;
        try {
            InputStream in = new FileInputStream(file);
            in.read(buffer);
            stringTemp = new String(buffer).trim().toString();
            in.close();
            // System.out.println(stringTemp);
        } catch (FileNotFoundException ex) {
        } catch (IOException ex) {
        }

        return stringTemp;
    }
}
